package Negocio;

import Datos.DBLibros2;
import Entidades.Libros;
import Interfaces.ILibros;
import java.util.ArrayList;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Nikolai Jolodkow
 */
public class daoLibros implements ILibros {

    private ArrayList<Libros> arraylibr;
    private ArrayList<Libros> asd;
    private int i;
    private int o;
    private String p;
    private Libros nodoo;
    DBLibros2 libros = new DBLibros2();

    @Override
    public boolean IngresarLibros(Entidades.Libros nodo) {

        if (validonombre(nodo)) {
            if (libros.IngresarLibros(nodo)) {
                return true;
            } else {
                return false;
            }

        }
        return false;
    }

    @Override
    public boolean modificar(Entidades.Libros nodo) {

        if (validonombre(nodo)) {
            return false;
        } else {
            if (libros.modificar(nodo)) {
                return true;
            }
            return false;
        }

    }

    @Override
    public Entidades.Libros consultalibros(String libro) {
        asd = conslibros();
        for (i = 0; i < asd.size() && libro != asd.get(i).getnombre(); i++) {
        }
        if (i == asd.size()) {
            return null;
        } else {
            nodoo.setid(asd.get(i).getid());
            nodoo.setnombre(asd.get(i).getnombre());

            return nodoo;
        }
    }

    private boolean validonombre(Entidades.Libros nodo) {
        asd = conslibros();
        if (nodo.getnombre() != null) {
            i = 0;
            for (i = 0; i < asd.size() && nodo.getnombre() != asd.get(i).getnombre(); i++) {
            }
            if (i == asd.size()) {
                return true;
            } else {
                return false;
            }
        }
        return false;
    }

    @Override
    public boolean eliminalibros(Libros nodo) {
        if (validonombre(nodo)) {
            return false;
        } else {
            if (libros.eliminalibros(nodo)) {
                return true;
            }
            return false;
        }
    }

    @Override
    public ArrayList<Libros> conslibros() {
        return libros.conslibros();
    }

    @Override
    public boolean validaLibros(String nlib) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public DefaultTableModel listalibros() {
        DefaultTableModel mimodelo = new DefaultTableModel() {
            @Override
            public boolean isCellEditable(int fila, int columna) {
                if (columna == 0 || columna == 1) //Que no se pueda editar ninguna columna
                {
                    return false;
                } else {
                    return true;
                }
            }
        };
        mimodelo.addColumn("Nro");
        mimodelo.addColumn("Libro");

        arraylibr = libros.conslibros();
        Object[] objeto = new Object[2];
        int i = 0;
        while (i < arraylibr.size()) {
            nodoo = arraylibr.get(i);
            objeto[0] = nodoo.getid();
            objeto[1] = nodoo.getnombre();

            mimodelo.addRow(objeto);
            i++;
        }
        return mimodelo;
    }

    @Override
    public ArrayList<Libros> arrayfiltrolibros(String filtro) {
        return libros.arrayfiltrolibros(filtro);
    }

    @Override
    public DefaultTableModel listalibros(String filtro) {
        DefaultTableModel mimodelo = new DefaultTableModel() {
            @Override
            public boolean isCellEditable(int fila, int columna) {
                if (columna == 0 || columna == 1) //Que no se pueda editar ninguna columna
                {
                    return false;
                } else {
                    return true;
                }
            }
        };
        mimodelo.addColumn("Nro");
        mimodelo.addColumn("Libro");

        arraylibr = libros.arrayfiltrolibros(filtro);
        Object[] objeto = new Object[2];
        int i = 0;
        while (i < arraylibr.size()) {
            nodoo = arraylibr.get(i);
            objeto[0] = nodoo.getid();
            objeto[1] = nodoo.getnombre();

            mimodelo.addRow(objeto);
            i++;
        }
        return mimodelo;
    }
}
